package cbfg.http

import cbfg.http.constant.PostType
import okhttp3.Request
import okhttp3.RequestBody

interface ConverterFactory {
    /**
     * 如果要对请求参数进行加密的话，在这个方法中进行
     * @param hostTag @HostTag 中的 value
     * @param httpTag @HttpTag 中的 value
     * @param postType post 类型：json 数据提交、表单数据提交、 文件上传
     * @param params 要提交的参数
     */
    fun convertRequestBody(
        hostTag: String?,
        httpTag: String?,
        postType: PostType,
        params: Map<String, Any>
    ): RequestBody

    /**
     * 如果想添加全局 header 的话，可以在这个方法中进行
     */
    fun convertRequest(hostTag: String?, httpTag: String?, request: Request): Request

    /**
     * 如果需要对请求结果进行解密的话，在这个方法中进行
     */
    @Throws(Exception::class)
    fun convertResponse(hostTag: String?, httpTag: String?, response: String): String
}